<?php

class Upload{

	protected $allowExt=array('jpg','jpeg','gif','png','bmp');
	protected $allowSize=1;
	protected $errno=0;
	protected $error=array(
		0=>'上传完成',
        1=>'文件超出upload_max_filesize',
        2=>'文件超出表单中 MAX_FILE_SIZE 选项指定的值',
        3=>'文件只有部分被上传',
        4=>'没有文件被上传',
        6=>'找不到临时目录',
        7=>'文件定入失败',
        8=>'文件大小超出配置文件的限制',
        9=>'不允许的文件类型',
        10=>'创建目录失败',
        11=>'未知错误,反思中'
	);
	
	/* 获取文件后缀 */
	protected function getExt($file){
		$ext=strtolower(strrchr($file,'.'));
		return $ext;
	}
	
	/* 检查文件后缀 */
	protected function checkExt($ext){
		return in_array(ltrim($ext,'.'),$this->allowExt);
	}
	
	/* 检查文件是否超过所设置的大小 */
	protected function checkSize($size){
		return $size<=$this->allowSize*1000*1000;
	}
	
	/* 创建问价目录 */
	protected function mk_dir(){
		$dir=date('Y/m/d',time());
		$dir=ROOT.'data/images/'.$dir;
		if(!is_dir($dir)){
			if(!mkdir($dir,0777,true)){
				return false;
			}
		}
		return $dir;
	}
	
	/* 生成随机字符串 */
	protected function randName($n=6){
		if($n<=0){
			return '';
		}
		$str='abcdefghijkmnpqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ0123456789';
		$str=substr(str_shuffle($str),0,$n);
		return $str;
	}
	
	/* 上传文件 */
	public function up($name){
		if(!isset($_FILES[$name])){
			return false;
		}
		$f=$_FILES[$name];

		if(($this->errno=$f['error'])>0){
			return false;
		}

		if(!$this->checkSize($f['size'])){
			$this->errno=8;
			return false;
		}

		$ext=$this->getExt($f['name']);
		if(!$ext){
			$this->errno=9;
			return false;
		}

		$path=$this->mk_dir();
		if(!$path){
			$this->error=10;
			return false;
		}

		$fileName=$this->randName(6);
		$path=$path.'/'.$fileName.$ext;
		if(!move_uploaded_file($f['tmp_name'],$path)){
			$this->errno=11;
			return false;
		}
		$path=str_replace(ROOT,'',$path);
		return $path;
	}
	
	/* 获取错误信息 */
	public function getErr(){
		return $this->error[$this->errno];
	}
	
	/* 设置文件后缀 */
	public function setExt($arr){
		$this->allowExt=$arr;
	}
	
	/* 设置文件个数 */
	public function setSize($num=2){
		$this->allowSize=$num;
	}


}


?>